<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
    <title>Penlight Documentation</title>
    <link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>

<div id="container">

<div id="product">
	<div id="product_logo"></div>
	<div id="product_name"><big><b></b></big></div>
	<div id="product_description"></div>
</div> <!-- id="product" -->


<div id="main">


<!-- Menu -->

<div id="navigation">
<br/>
<h1>Penlight</h1>

<ul>
  <li><a href="../index.html">Index</a></li>
</ul>

<h2>Contents</h2>
<ul>
<li><a href="#Functions">Functions</a></li>
</ul>


<h2>Modules</h2>
<ul>
  <li><a href="../modules/pl.html">pl</a></li>
  <li><a href="../modules/pl.Date.html">pl.Date</a></li>
  <li><a href="../modules/pl.List.html">pl.List</a></li>
  <li><a href="../modules/pl.Map.html">pl.Map</a></li>
  <li><a href="../modules/pl.MultiMap.html">pl.MultiMap</a></li>
  <li><strong>pl.OrderedMap</strong></li>
  <li><a href="../modules/pl.Set.html">pl.Set</a></li>
  <li><a href="../modules/pl.app.html">pl.app</a></li>
  <li><a href="../modules/pl.array2d.html">pl.array2d</a></li>
  <li><a href="../modules/pl.class.html">pl.class</a></li>
  <li><a href="../modules/pl.comprehension.html">pl.comprehension</a></li>
  <li><a href="../modules/pl.config.html">pl.config</a></li>
  <li><a href="../modules/pl.data.html">pl.data</a></li>
  <li><a href="../modules/pl.dir.html">pl.dir</a></li>
  <li><a href="../modules/pl.file.html">pl.file</a></li>
  <li><a href="../modules/pl.func.html">pl.func</a></li>
  <li><a href="../modules/pl.input.html">pl.input</a></li>
  <li><a href="../modules/pl.lapp.html">pl.lapp</a></li>
  <li><a href="../modules/pl.lexer.html">pl.lexer</a></li>
  <li><a href="../modules/pl.luabalanced.html">pl.luabalanced</a></li>
  <li><a href="../modules/pl.operator.html">pl.operator</a></li>
  <li><a href="../modules/pl.path.html">pl.path</a></li>
  <li><a href="../modules/pl.permute.html">pl.permute</a></li>
  <li><a href="../modules/pl.pretty.html">pl.pretty</a></li>
  <li><a href="../modules/pl.seq.html">pl.seq</a></li>
  <li><a href="../modules/pl.sip.html">pl.sip</a></li>
  <li><a href="../modules/pl.strict.html">pl.strict</a></li>
  <li><a href="../modules/pl.stringio.html">pl.stringio</a></li>
  <li><a href="../modules/pl.stringx.html">pl.stringx</a></li>
  <li><a href="../modules/pl.tablex.html">pl.tablex</a></li>
  <li><a href="../modules/pl.template.html">pl.template</a></li>
  <li><a href="../modules/pl.test.html">pl.test</a></li>
  <li><a href="../modules/pl.text.html">pl.text</a></li>
  <li><a href="../modules/pl.utils.html">pl.utils</a></li>
  <li><a href="../modules/pl.xml.html">pl.xml</a></li>
</ul>
<h2>Topics</h2>
<ul>
  <li><a href="../topics/01-introduction.md.html">01-introduction.md</a></li>
  <li><a href="../topics/02-arrays.md.html">02-arrays.md</a></li>
  <li><a href="../topics/03-strings.md.html">03-strings.md</a></li>
  <li><a href="../topics/04-paths.md.html">04-paths.md</a></li>
  <li><a href="../topics/05-dates.md.html">05-dates.md</a></li>
  <li><a href="../topics/06-data.md.html">06-data.md</a></li>
  <li><a href="../topics/07-functional.md.html">07-functional.md</a></li>
  <li><a href="../topics/08-additional.md.html">08-additional.md</a></li>
  <li><a href="../topics/09-discussion.md.html">09-discussion.md</a></li>
</ul>
<h2>Examples</h2>
<ul>
  <li><a href="../examples/seesubst.lua.html">seesubst.lua</a></li>
  <li><a href="../examples/sipscan.lua.html">sipscan.lua</a></li>
  <li><a href="../examples/symbols.lua.html">symbols.lua</a></li>
  <li><a href="../examples/test-cmp.lua.html">test-cmp.lua</a></li>
  <li><a href="../examples/test-data.lua.html">test-data.lua</a></li>
  <li><a href="../examples/test-listcallbacks.lua.html">test-listcallbacks.lua</a></li>
  <li><a href="../examples/test-pretty.lua.html">test-pretty.lua</a></li>
  <li><a href="../examples/test-symbols.lua.html">test-symbols.lua</a></li>
  <li><a href="../examples/testapp.lua.html">testapp.lua</a></li>
  <li><a href="../examples/testclone.lua.html">testclone.lua</a></li>
  <li><a href="../examples/testconfig.lua.html">testconfig.lua</a></li>
  <li><a href="../examples/testglobal.lua.html">testglobal.lua</a></li>
  <li><a href="../examples/testinputfields.lua.html">testinputfields.lua</a></li>
  <li><a href="../examples/testinputfields2.lua.html">testinputfields2.lua</a></li>
  <li><a href="../examples/testxml.lua.html">testxml.lua</a></li>
  <li><a href="../examples/which.lua.html">which.lua</a></li>
</ul>

</div>

<div id="content">

<h1>Module <code>pl.OrderedMap</code></h1>

<p>OrderedMap, a map which preserves ordering.</p>
<p> Derived from <a href="../modules/pl.Map.html#">pl.Map</a> .</p>

<p> Dependencies: <a href="../modules/pl.utils.html#">pl.utils</a> , <a href="../modules/pl.tablex.html#">pl.tablex</a> , <a href="../modules/pl.List.html#">pl.List</a> </p>

<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:_init">OrderedMap:_init&nbsp;(t)</a></td>
	<td class="summary">construct an OrderedMap.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:update">OrderedMap:update&nbsp;(t)</a></td>
	<td class="summary">update an OrderedMap using a table.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:set">OrderedMap:set&nbsp;(key, val)</a></td>
	<td class="summary">set the key&rsquo;s value.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:insert">OrderedMap:insert&nbsp;(pos, key, val)</a></td>
	<td class="summary">insert a key/value pair before a given position.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:keys">OrderedMap:keys&nbsp;()</a></td>
	<td class="summary">return the keys in order.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:values">OrderedMap:values&nbsp;()</a></td>
	<td class="summary">return the values in order.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:sort">OrderedMap:sort&nbsp;(cmp)</a></td>
	<td class="summary">sort the keys.</td>
	</tr>
	<tr>
	<td class="name" nowrap><a href="#OrderedMap:iter">OrderedMap:iter&nbsp;()</a></td>
	<td class="summary">iterate over key-value pairs in order.</td>
	</tr>
</table>

<br/>
<br/>


    <h2><a name="Functions"></a>Functions</h2>
    
    <dl class="function">
    <dt>
    <a name = "OrderedMap:_init"></a>
    <strong>OrderedMap:_init&nbsp;(t)</strong>
    </dt>
    <dd>
    construct an OrderedMap. 
 Will throw an error if the argument is bad.

    <h3>Parameters:</h3>
    <ul>
       <li><code><em>t</em></code>:  optional initialization table, same as for <a href="../modules/pl.OrderedMap.html#OrderedMap:update">OrderedMap:update</a></li>
    </ul>




</dd>
    <dt>
    <a name = "OrderedMap:update"></a>
    <strong>OrderedMap:update&nbsp;(t)</strong>
    </dt>
    <dd>
    update an OrderedMap using a table.  <br>
 If the table is itself an OrderedMap, then its entries will be appended. <br>
 if it s a table of the form <code>{{key1=val1},{key2=val2},&hellip;}</code> these will be appended. <br>
 Otherwise, it is assumed to be a map-like table, and order of extra entries is arbitrary.

    <h3>Parameters:</h3>
    <ul>
       <li><code><em>t</em></code>:  a table.</li>
    </ul>


    <h3>Returns:</h3>
    <ol>
        <li>the map, or nil in case of error</li>
        <li>the error message</li>
    </ol>


</dd>
    <dt>
    <a name = "OrderedMap:set"></a>
    <strong>OrderedMap:set&nbsp;(key, val)</strong>
    </dt>
    <dd>
    set the key&rsquo;s value.    This key will be appended at the end of the map. <br>
 If the value is nil, then the key is removed.

    <h3>Parameters:</h3>
    <ul>
       <li><code><em>key</em></code>:  the key</li>
       <li><code><em>val</em></code>:  the value</li>
    </ul>


    <h3>Returns:</h3>
    <ol>
        the map
    </ol>


</dd>
    <dt>
    <a name = "OrderedMap:insert"></a>
    <strong>OrderedMap:insert&nbsp;(pos, key, val)</strong>
    </dt>
    <dd>
    insert a key/value pair before a given position. 
 Note: if the map already contains the key, then this effectively
 moves the item to the new position by first removing at the old position.
 Has no effect if the key does not exist and val is nil

    <h3>Parameters:</h3>
    <ul>
       <li><code><em>pos</em></code>:  a position starting at 1</li>
       <li><code><em>key</em></code>:  the key</li>
       <li><code><em>val</em></code>:  the value; if nil use the old value</li>
    </ul>




</dd>
    <dt>
    <a name = "OrderedMap:keys"></a>
    <strong>OrderedMap:keys&nbsp;()</strong>
    </dt>
    <dd>
    return the keys in order. 
 (Not a copy!)



    <h3>Returns:</h3>
    <ol>
        List
    </ol>


</dd>
    <dt>
    <a name = "OrderedMap:values"></a>
    <strong>OrderedMap:values&nbsp;()</strong>
    </dt>
    <dd>
    return the values in order. 
 this is relatively expensive.



    <h3>Returns:</h3>
    <ol>
        List
    </ol>


</dd>
    <dt>
    <a name = "OrderedMap:sort"></a>
    <strong>OrderedMap:sort&nbsp;(cmp)</strong>
    </dt>
    <dd>
    sort the keys. 

    <h3>Parameters:</h3>
    <ul>
       <li><code><em>cmp</em></code>:  a comparison function as for <a href="http://www.lua.org/manual/5.1/manual.html#pdf-table.sort">table.sort</a></li>
    </ul>


    <h3>Returns:</h3>
    <ol>
        the map
    </ol>


</dd>
    <dt>
    <a name = "OrderedMap:iter"></a>
    <strong>OrderedMap:iter&nbsp;()</strong>
    </dt>
    <dd>
    iterate over key-value pairs in order. 





</dd>
</dl>


</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.2</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
